/*
 * @Author: zhang
 * @Date: 2025-03-31 10:04:05
 * @Description: 
 * @LastEditors: zhang
 * @LastEditTime: 2025-04-10 11:08:44
 */

export type GridType={ id: number, x: number, y: number, row: number, column: number, type: number }
export interface TerrainConfigItem {
    name?: string;
    id: number;
    type: number;
    description?: string;
    icon: string;
    size?: [number, number];  // 可选属性，因为有些地形没有 size
    offset?: [number, number];  // 可选属性，因为有些地形没有 size
}

export interface TerrainConfig {
    terrains: TerrainConfigItem[];
    resource: string;
}

export class TerrainConfigManager {
    private static instance: TerrainConfigManager;
    private config: TerrainConfig | null = null;

    private constructor() {}

    public static getInstance(): TerrainConfigManager {
        if (!TerrainConfigManager.instance) {
            TerrainConfigManager.instance = new TerrainConfigManager();
        }
        return TerrainConfigManager.instance;
    }

    public async loadConfig(mapId:string): Promise<void> {
        try {
            const response = await fetch(`configs/Terrain/TerrainConfigs${mapId}.json`);
            this.config = await response.json();
        } catch (error) {
            console.error('加载地形配置失败:', error);
        }
    }
    public getTerrainList(): TerrainConfigItem[] | null {
        if (!this.config) return null;
        return this.config.terrains;
    }


    public getTerrainConfig(id: number): TerrainConfigItem | null {
        if (!this.config) return null;
        return this.config.terrains.find(item => item.id == id) || null;
    }

    // 新增：获取完整的资源路径
    public getFullResourcePath(icon: string): string {
        if (!this.config) return icon;
        return this.config.resource + icon;
    }
}
export enum TerrainType {
    PREDATOR = 0,    // 猛兽 - 不可通行
    GRASS = 1,     // 草地 - 可通行，移动速度正常
    WATER = 2,     // 水域 - 不可通行
    NPC = 4,       // NPC - 不可通行
    WOUNDER = 5,   // 伤员
    BRIDGE = 6,    // 桥梁 - 可通行，连接水域
    PORTAL = 7,    // 传送门 - 可通行，可传送
    ROAD = 8,      // 道路 - 可通行，移动速度快
    BUILDING = 9,  // 建筑 - 不可通行
    FOOD = 10,  // 建筑 - 不可通行


    // 可以添加更多的地形类型
};
